home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / STRINGS / TPSTR7 / TPCHAR.PAS < prev    next >
Pascal/Delphi Source File  |  1993-03-15  |  6KB  |  263 lines

  1. {**************************************************************************}
  2. {                                                                          }
  3. { TPCHAR.PAS                                                               }
  4. { for Turbo Pascal 6.0 +,Version 1.00                                      }
  5. {                                                                          }
  6. { (c) 1992, RAVIART Philippe, All rights reserved.                         }
  7. { CIS: 100135,503                                                          }
  8. {**************************************************************************}
  9. {$A+,S-}
  10. {$DEFINE DEBUG}
  11.  
  12. {$IFDEF DEBUG}
  13.    {$D+,L+}
  14. {$ELSE
  15.    {$D-,L-}
  16. {$ENDIF}
  17.  
  18. unit
  19.   TpChar;interface
  20.  
  21. {**************************************************************************}
  22. {                                                                          }
  23. { This Unit contains 17 procs for treating characters.                     }
  24. { Please Refer to "TPCHAR.DOC" for details.                                }
  25. {                                                                          }
  26. {**************************************************************************}
  27.  
  28. Function    IsAscii (C: Char):Boolean;
  29. Function    IsCntrl (C: Char):Boolean;
  30. Function    IsGraph (C: Char):Boolean;
  31. Function    IsPrint (C: Char):Boolean;
  32. Function    IsSigned(C: Char):Boolean;
  33. Function    IsSpace (C: Char):Boolean;
  34. Function    IsAlnum (C: Char):Boolean;
  35. Function    IsAlpha (C: Char):Boolean;
  36. Function    IsDigit (C: Char):Boolean;
  37. Function    IsDos   (C: Char):Boolean;
  38. Function    IsFile  (C: Char):Boolean;
  39. Function    IsLower (C: Char):Boolean;
  40. Function    IsPunct (C: Char):Boolean;
  41. Function    IsReal  (C: Char):Boolean;
  42. Function    IsUpper (C: Char):Boolean;
  43. Function    IsHex   (C: Char):Boolean;
  44. Function    IsPath  (C: Char):Boolean;
  45.  
  46. implementation
  47.  
  48. Const
  49.    ChrClass  : Array[0..127] of byte =
  50.                ($00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
  51.                 $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
  52.                 $00,$48,$08,$48,$48,$48,$48,$48,$48,$48,$88,$28,$08,$68,$68,$08,
  53.                 $44,$44,$44,$44,$44,$44,$44,$44,$44,$44,$88,$08,$08,$08,$08,$88,
  54.                 $48,$52,$52,$52,$52,$72,$52,$42,$42,$42,$42,$42,$42,$42,$42,$42,
  55.                 $42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$08,$88,$08,$48,$48,
  56.                 $48,$51,$51,$51,$51,$71,$51,$41,$41,$41,$41,$41,$41,$41,$41,$41,
  57.                 $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$48,$08,$48,$48,$00);
  58.  
  59.  
  60. Function    IsAscii(C: Char): Boolean;Assembler;
  61. Asm
  62.   mov   bl,C
  63.   xor   ax,ax
  64.   shl   bl,1
  65.   sbb   al,-1
  66. End;
  67.  
  68. Function    IsCntrl(C: Char):Boolean;Assembler;
  69. Asm
  70.   mov  bl,C
  71.   mov  al,True
  72.   cmp  bl,127
  73.   je   @@01
  74.   cmp  bl,' '
  75.   adc  al,-1
  76. @@01:
  77. end;
  78.  
  79. Function    IsGraph(C: Char): Boolean;Assembler;
  80. Asm
  81.    mov   bl,C
  82.    xor   ax,ax
  83.    cmp   bl,33
  84.    jb    @@01
  85.    cmp   bl,127
  86.    adc   al,al
  87. @@01:
  88. end;
  89.  
  90. Function    IsPrint(C: Char):Boolean;Assembler;
  91. Asm
  92.    mov   bl,C
  93.    xor   ax,ax
  94.    cmp   bl,32
  95.    jb    @@01
  96.    cmp   bl,127
  97.    adc   al,al
  98. @@01:
  99. end;
  100.  
  101. Function    IsSigned(C: Char):Boolean;assembler;
  102. Asm
  103.    xor   ax,ax
  104.    mov   cl,C
  105.    cmp   cl,'9'
  106.    jnbe  @@02
  107.    cmp   cl,'0'
  108.    jnb   @@01
  109.    cmp   cl,'-'
  110.    je    @@01
  111.    cmp   cl,'+'
  112.    jne   @@02
  113. @@01:
  114.    inc   ax
  115. @@02:
  116. end;
  117.  
  118. Function    IsSpace(C: Char):Boolean;Assembler;
  119. Asm
  120.    xor   ax,ax
  121.    mov   cl,C
  122.    cmp   cl,' '
  123.    je    @@01
  124.    cmp   cl,$0d
  125.    jnbe  @@02
  126.    cmp   cl,$09
  127.    jb    @@02
  128. @@01:
  129.    inc   ax
  130. @@02:
  131. end;
  132.  
  133. Function    IsAlnum(C: Char):Boolean;Assembler;
  134. Asm
  135.    xor   ax,ax
  136.    mov   bx,Offset ChrClass
  137.    add   bl,C
  138.    test  byte([bx]),$07
  139.    jz    @@01
  140.    inc   ax
  141. @@01:
  142. end;
  143.  
  144. Function    IsAlpha(C: Char):Boolean;Assembler;
  145. Asm
  146.    xor   ax,ax
  147.    mov   bx,Offset ChrClass
  148.    add   bl,C
  149.    test  byte([bx]),$03
  150.    jz    @@01
  151.    inc   ax
  152. @@01:
  153. end;
  154.  
  155. Function    IsDigit(C: Char):Boolean;Assembler;
  156. Asm
  157.    xor   ax,ax
  158.    mov   bx,Offset ChrClass
  159.    add   bl,C
  160.    test  byte([bx]),$04
  161.    jz    @@01
  162.    inc   ax
  163. @@01:
  164. end;
  165.  
  166. Function    IsDos(C: Char):Boolean;Assembler;
  167. Asm
  168.    xor   ax,ax
  169.    mov   bx,Offset ChrClass
  170.    add   bl,C
  171.    test  byte([bx]),$c0
  172.    jz    @@01
  173.    inc   ax
  174. @@01:
  175. end;
  176.  
  177. Function    IsFile(C: Char):Boolean;Assembler;
  178. Asm
  179.    xor   ax,ax
  180.    mov   bx,Offset ChrClass
  181.    add   bl,C
  182.    test  byte([bx]),$40
  183.    jz    @@01
  184.    inc   ax
  185. @@01:
  186. end;
  187.  
  188. Function    IsLower(C: Char):Boolean;Assembler;
  189. Asm
  190.    xor   ax,ax
  191.    mov   bx,Offset ChrClass
  192.    add   bl,C
  193.    test  byte([bx]),$01
  194.    jz    @@01
  195.    inc   ax
  196. @@01:
  197. end;
  198.  
  199. Function    IsPunct(C: Char):Boolean;Assembler;
  200. Asm
  201.    xor   ax,ax
  202.    mov   bx,Offset ChrClass
  203.    add   bl,C
  204.    test  byte([bx]),$08
  205.    jz    @@01
  206.    inc   ax
  207. @@01:
  208. end;
  209.  
  210. Function    IsReal(C: Char):Boolean;Assembler;
  211. Asm
  212.    xor   ax,ax
  213.    mov   bx,Offset ChrClass
  214.    add   bl,C
  215.    test  byte([bx]),$24
  216.    jz    @@01
  217.    inc   ax
  218. @@01:
  219. end;
  220.  
  221. Function    IsUpper(C: Char):Boolean;Assembler;
  222. Asm
  223.    xor   ax,ax
  224.    mov   bx,Offset ChrClass
  225.    add   bl,C
  226.    test  byte([bx]),$02
  227.    jz    @@01
  228.    inc   ax
  229. @@01:
  230. end;
  231.  
  232. Function    IsHex(C: Char):Boolean;Assembler;
  233. Asm
  234.    xor   ax,ax
  235.    mov   bx,Offset ChrClass
  236.    add   bl,C
  237.    test  byte([bx]),$14
  238.    jz    @@01
  239.    inc   ax
  240. @@01:
  241. end;
  242.  
  243. Function    IsPath(C: Char):Boolean;Assembler;
  244. Asm
  245.    xor   ax,ax
  246.    mov   bx,Offset ChrClass
  247.    add   bl,C
  248.    test  byte([bx]),$40
  249.    jz    @@02
  250. @@01:
  251.    inc   ax
  252.    jmp   @@03
  253. @@02:
  254.    mov   bl,C
  255.    cmp   bl,'\'
  256.    je    @@01
  257.    cmp   bl,':'
  258.    je    @@01
  259. @@03:
  260. end;
  261.  
  262. end.
  263.